package cn.tedu.knows.kafka.demo;

import cn.tedu.knows.kafka.model.Message;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@Component
@Slf4j
public class Producer {

    //这个类充当生产者,既消息的发送方
    //当前类关注如何将我们的消息发送到Kafka

    //KafkaTemplate是kafka依赖提供的操作kafka的对象
    //<String,String>意思是:<[话题名称],[要添加的内容]>
    @Resource
    private KafkaTemplate<String,String> kafkaTemplate;

    //代码中需要将java对象转换为json格式发送,所以需要下面的工具类
    private Gson gson=new Gson();

    int i=1;
    //消息的发送设计为每隔10秒钟发送一次消息
    //使用@EnableScheduling提供的方法
    //fixedRate表示周期运行
    @Scheduled(fixedRate = 1000*10)
    public void sendMessage(){
        Message message=new Message()
                .setId(i)
                .setContent("这是一个非常机密的消息!")
                .setTime(System.currentTimeMillis());
        i++;
        //将java对象转换为json格式字符串
        String json=gson.toJson(message);
        log.debug("即将发送信息:{}",json);
        //开始发送信息,send方法参数为([话题名称],[消息内容])
        kafkaTemplate.send("myTopic",json);
        log.debug("本次信息已发送!");
    }



}
